// pages/shappingCart/shappingCart.js
// 1绑定事件获取收或地址  2调用小程序内置api 获取收货地址 不推荐 有问题
// 推荐  获取用户对小程序 所授予获取地址的权限wx.getSetting 状态  scope
// 1 假设 用户 第一次点击收货地址框 为 确定  scope is true      可以直接调用收货地址
// 2 假设 用户 never 调用收货地址框 为 确定  scope is underfine  可以直接调用收货地址
// 3 假设 用户 第一次点击收货地址框 为 确定  scope is false      不能直接调用收货地址
//  在地三种情况时，诱导用户自己打开 权限设置页面 wx.openSetting 当用户重新给与 获取地址权限的时候  直接调用收货地址

// 页面加载完毕 1获取本地数据（地址信息 2 把数据给data 中的一个变量 onloading 因为购物车频繁的打开所以我想用Onshow
//onshow 获取缓存中的数据
import {getSetting, chooseAddress, openSetting, showToast} from '../../utils/asyncWx.js'
import  regeneratorRuntime from '../../lib/runtime/runtime.js'
Page({
  data: {
    address: {},
    cart: [],
    allCheck: false,
    totalPrice: 0,
    toatlNum:0
  },
  onShow() {
    let address = wx.getStorageSync('address');
    let cart = wx.getStorageSync('cart')||[]
    // const allCheck = cart.length?cart.every(v => v.isChecked):false
    this.setData({address})
   this.setCart(cart)
  }
  ,
  onLoad: function (options) {

  },
  async handleChooseAddress() {
    // 处理错误
    try {
      // 获取 权限状态
      let res = await getSetting()
      let scopeAddress = res.authSetting["scope.address"];
      if(scopeAddress===false){
        // 获取 权限状态
        await openSetting()
      }
      // 调用api 获取地址
      const address = await chooseAddress()
      address.all = address.provinceName+address.cityName+address.countyName+address.detailInfo
      // 纯入缓存
      wx.setStorageSync('address', address);
    } catch (error) {
      
    }

    // 第三次 优化结果
    // let res = await getSetting()
    // let scopeAddress = res.authSetting["scope.address"];
    // if(scopeAddress===false){
    //   await openSetting()
    // }
    // const result1 = await chooseAddress()
    // console.log(result1)

    //  第二次 es7 async 优化 结果  生成utils 下的asyncWx.js文件
    // let res = await getSetting()
    // let scopeAddress = res.authSetting["scope.address"];
    // if(scopeAddress===true||scopeAddress===undefined){
    //   const result1 = await chooseAddress()
    //   console.log(result1)
    // } else {
    //   await openSetting()
    //   const result1 = await chooseAddress()
    //   console.log(result1)
    // }

    // 第一次
    // wx.getSetting({
    //   success: (result)=>{
    //     console.log(result)
    //     let scopeAddress = result.authSetting["scope.address"];
    //     if(scopeAddress===true||scopeAddress===undefined){
    //       wx.chooseAddress({
    //         success: (result1)=>{
    //           console.log(result1)
    //         }
    //       })
    //     } else {
    //       // 重新获取 权限（获取地址）
    //       wx.openSetting({
    //         success: (result2)=>{
    //           console.log(result2)
    //           // 重新调用获取地址
    //           wx.chooseAddress({
    //             success: (result3)=>{
    //               console.log(result3)
    //             }
    //           })
    //         }
    //       });
    //     }
    //   }
    // });
  },
  // 单选事件
  handleItemChange (e) {
    const goods_id = e.currentTarget.dataset.id
    let { cart } = this.data
    let index = cart.findIndex(v => {
      return v.goods_id === goods_id
    })
   
    cart[index].isChecked = !cart[index].isChecked
    this.setCart(cart)
  },
  // 商品数量加减
  handleChangeSum(e){
    const { action, id} = e.currentTarget.dataset
    let { cart } = this.data
    let index = cart.findIndex(v => v.goods_id === id)
    if(action===-1&&cart[index].num===1) {
      wx.showModal({
        title: '提示',
        content: '您是否要删除',
        success: (result) => {
          if(result.confirm){
            cart.splice(index,1)
            this.setCart(cart)
          }
        },
        fail: ()=>{},
        complete: ()=>{}
      });
    } else {
      cart[index].num += action
    }
    this.setCart(cart)
  },
  setCart(cart) {
    let allCheck = true
    //重数量，总价格
    let  totalPrice = 0
    let toatlNum = 0
    cart.forEach(v => {
      if(v.isChecked){
        totalPrice += v.num*v.goods_price
        toatlNum += v.num
      } else{
        allCheck = false
      }
    })
    // 判断数组是否为空
    allCheck = cart.length?allCheck:false
    this.setData({
      cart,
      allCheck,
      totalPrice,
      toatlNum
    })
    wx.setStorageSync('cart', cart);
  },
  async pay(){
    let { address, toatlNum } = this.data 
    console.log(toatlNum)
    console.log(address)
    if(toatlNum===0){
     await showToast('您还没有选择商品')
    }
    if(!address.userName){
      await showToast('您还没有选择地址')
    }
    wx.navigateTo({
      url: '/pages/pay/pay',
      success: (result)=>{
        
      },
      fail: ()=>{},
      complete: ()=>{}
    });
  }

})